home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CLASSSRC.PAK / MAKEFILE < prev    next >
Text File  |  1997-05-06  |  23KB  |  935 lines

  1. #-----------------------------------------------------------------------------
  2. # MAKEFILE for Class Libraries
  3. # Copyright (c) Borland International 1991, 1996, All Rights Reserved
  4. #
  5. # $Revision:   5.51  $
  6. #
  7. # Defines:
  8. #   -DDOS, -DWIN32, -DOS2   Specifies target system
  9. #                           (DOS implies WIN16 for Windows specific classes)
  10. #   -DMT                    Build multi-thread version
  11. #   -DVCL                   builds OWL using the VCL-compatible RTL (cp32mt)
  12. #                             (implies -DMT and -DNAMESPACE;
  13. #                             requires MODEL=t and WIN32)
  14. #   MODEL=<s|c|m|l|h>       Specifies memory model for DOS library.
  15. #                           Required when building DOS library.
  16. #   BIDSNAME=xxx            Base name of the target library or DLL
  17. #                           Always required.
  18. #   BIDSDLLNAME=xxx         Overrides base name of target for DLLs only
  19. #   BIDSVER=xxx             Base name of the target library or DLL
  20. #   -DDLL                   Build a DLL.
  21. #   -DDIAGS                 Build the diagnostic version of the target.
  22. #   -DOBJECTS               Also build the object-based containers
  23. #   -DBIDSFARVTABLE         Moves class vtables out of dgroup
  24. #   CODEGUARD               Builds classlib with CodeGuard:
  25. #                            1=basic data, 2=full checking
  26. #   NAMESPACE               builds BIDS within a namespace "ClassLib"
  27. #   ALIGN=<1|2|4|8>         Specifies the alignment
  28. #   BCC32I                  Uses bcc32i instead of bcc32 to compile
  29. #   ILINK                   Uses ILINK32 instead of TLINK32 to link
  30. #   -DBI_REDEFINE_BOOL      Builds library with BOOL mapped to bool
  31. #
  32. # 16-bit non-diagnostic static libraries:
  33. #   make -r -DDOS MODEL=s BIDSNAME=bids
  34. #   make -r -DDOS MODEL=c BIDSNAME=bids
  35. #   make -r -DDOS MODEL=m BIDSNAME=bids
  36. #   make -r -DDOS MODEL=l BIDSNAME=bids
  37. #   make -r -DDOS MODEL=h BIDSNAME=bids
  38. #
  39. # 16-bit diagnostic static libraries:
  40. #   make -r -DDOS MODEL=s -DDIAGS BIDSNAME=bids
  41. #   make -r -DDOS MODEL=c -DDIAGS BIDSNAME=bids
  42. #   make -r -DDOS MODEL=m -DDIAGS BIDSNAME=bids
  43. #   make -r -DDOS MODEL=l -DDIAGS BIDSNAME=bids
  44. #   make -r -DDOS MODEL=h -DDIAGS BIDSNAME=bids
  45. #
  46. # 16-bit DLLs:
  47. #   make -r -DDOS -DDLL BIDSNAME=bids
  48. #   make -r -DDOS -DDLL -DDIAGS BIDSNAME=bids
  49. #
  50. # WIN32 libraries:
  51. #   make -r -DWIN32 BIDSNAME=bidsf
  52. #   make -r -DWIN32 -DDIAGS BIDSNAME=bids
  53. #
  54. # WIN32 DLLs:
  55. #   make -r -DWIN32 -DDLL BIDSNAME=bids
  56. #   make -r -DWIN32 -DDLL -DDIAGS BIDSNAME=bids
  57. #
  58. # OS/2 libraries:
  59. #   make -r -DOS2 BIDSNAME=bids
  60. #   make -r -DOS2 -DDIAGS BIDSNAME=bids
  61. #
  62. # OS/2 DLLs:
  63. #   make -r -DOS2 -DDLL BIDSNAME=bids
  64. #   make -r -DOS2 -DDLL -DDIAGS BIDSNAME=bids
  65. #
  66. # Define these for alternate BIDS build directories:
  67. #   BIDSSRCDIR    defaults to: $(BCROOT)\source\CLASSL
  68. #   BIDSINCDIR    defaults to: $(BCROOT)\include
  69. #   BIDSLIBDIR    defaults to: $(BCROOT)\lib
  70. #   BIDSBINDIR    defaults to: $(BCROOT)\bin
  71. #
  72. #   When building VCL-compatible libraries, the makefile defaults
  73. #   assume BCROOT points to the base of the C++Builder tree. If
  74. #   you are building in the context of Borland C++, then you must
  75. #   set BCBROOT explicitly yourself.
  76. #
  77. #   BCBROOT       defaults to: $(BCROOT)   (root of C++Builder)
  78. #   VCLINCDIR     defaults to: $(BCBROOT)\include\VCL
  79. #   VCLOBJDIR     defaults to: $(BCBROOT)\lib\obj
  80. #   VCLLIBDIR     defaults to: $(BCBROOT)\lib
  81. #-----------------------------------------------------------------------------
  82.  
  83. .autodepend
  84. .cacheautodepend
  85. .swap
  86.  
  87. #
  88. # If no model is defined or implied, set a default
  89. #
  90. !if !$d(MODEL) && !$d(DOS) && !$d(WIN16) && !$d(OS2) && !$d(VCL)
  91.   MODEL = f    # default build model = flat static, Win32
  92. #  MODEL = d    # default build model = flat DLL, Win32
  93. !endif
  94.  
  95. #
  96. # If no system was set, choose one
  97. #
  98. !if (!$d(WIN32) && !$d(WIN16) && !$d(OS2))
  99. ! if $(MODEL) == d
  100.     DLL = 1      # model d means to build the DLL model
  101.     WIN32 = 1    # 32bit DLL
  102. ! elif ($(MODEL) == t || $(MODEL) == f || $(VCL)) && !$d(OS2)
  103.     WIN32 = 1    # must use WIN32 switch for flat, threaded, or VCL
  104. ! endif
  105. !endif
  106.  
  107. #
  108. # For multithreaded target, set the value of MT
  109. #
  110. !if $(MODEL) == t || $d(MT) || $d(VCL)
  111.   MT = mt       # model t implies MT. Use MT as 'mt' to build library names
  112. !endif
  113.  
  114. #
  115. # VCL compatibility implies use of namespace
  116. #
  117. !if $d(VCL)
  118.   NAMESPACE = 1
  119. !endif
  120.  
  121. #
  122. # Make sure model is consistent with system
  123. #
  124. !if $d(WIN32)
  125. ! if $d(MT) || $d(VCL)
  126.     MODEL = t
  127. ! else
  128.     MODEL = f
  129. ! endif
  130. !elif $d(OS2)
  131.   MODEL = 2
  132. !else
  133. ! if $d(DLL)
  134.     MODEL = l
  135. ! endif
  136. ! if !$d(DOS)
  137.     DOS   = 1
  138. ! endif
  139. ! if !$d(WIN16)
  140.     WIN16 = 1
  141. ! endif
  142. !endif
  143.  
  144. #
  145. # Figure out default data alignment based on target
  146. #
  147. !if !$d(ALIGN)
  148. ! if $d(WIN32)
  149.     ALIGN = 1
  150. ! else
  151.     ALIGN = 1
  152. ! endif
  153. !endif
  154.  
  155. #
  156. # Check for incompatible choices and warn user
  157. #
  158. !if $d(VCL)
  159. ! if !$d(WIN32) || $(MODEL) != t
  160. !   error VCL-compatible library must be multithreaded 32-bit
  161. ! endif
  162. !endif
  163.  
  164. !if $d(DOS) && $d(MT)
  165. ! error Cannot build multi-thread library for DOS.
  166. !endif
  167.  
  168. !if $d(MODEL)
  169. ! if $(MODEL)!=s && $(MODEL)!=c && $(MODEL)!=m && $(MODEL)!=l && $(MODEL)!=h && $(MODEL)!=f && $(MODEL)!=t
  170. !   error MODEL must be s, c, m, l, h, f or t
  171. ! endif
  172. !endif
  173.  
  174. !if $d(ILINK) && $d(WIN16)
  175. ! error Cannot build 16-bit targets with ILINK.
  176. !endif
  177.  
  178. #--------------------------------------------------------------------
  179. # dir & name components
  180. #--------------------------------------------------------------------
  181. !if $d(DLL)
  182.  
  183. ! if !$d(BIDSNAME) && !$d(DIAGS)
  184. !   error MUST DEFINE LIBRARY NAME, e.g. "MAKE MODEL=d BIDSNAME=YourName"
  185. ! endif
  186. ! if !$d(BIDSDLLNAME)
  187.     BIDSDLLNAME= $(BIDSNAME)
  188. !endif
  189. ! if $d(WIN32)
  190. !   if $d(VCL)
  191.       KEY = vi                  # compatible with VCL (e.g. BDS52VI.LIB)
  192. !   else
  193.       KEY = $(MODEL)i           # Win32 flat or multithread DLL import library
  194. !   endif
  195. ! elif $d(OS2)
  196.     KEY = i$(MODEL)             # OS2 DLL import library
  197. ! else
  198.     KEY = i                     # Dos/Win16 DLL import library
  199. ! endif
  200.  
  201. !else
  202.  
  203. ! if $d(VCL)
  204.     KEY = v                     # Compatible with VCL (e.g. BIDSV.LIB)
  205. ! else
  206.     KEY = $(MODEL)              # Static library just uses model
  207. ! endif
  208.  
  209. !endif  # if/else $d(DLL)
  210.  
  211. #! if $d(USERDLL)
  212. #  KEY = $(KEY)u                 # Static or import library for use by dlls
  213. #! endif
  214.  
  215. !if !$d(BIDSNAME)
  216.   BIDSNAME  = bids
  217. ! if !$d(BIDSVER)
  218.     BIDSVER = 52
  219. ! endif
  220. !endif
  221.  
  222. #--------------------------------------------------------------------
  223. # debug & diagnostic flags
  224. #--------------------------------------------------------------------
  225. !if $d(DEBUG)
  226.   CDBG = -v -k -Od    # debug-info on, normal stack, no optimizations
  227. !endif
  228. !if 1 || $d(DEBUG)    # Leave public debug info in dll & strip to a .tds after
  229. ! if $d(WIN32)
  230.     LDBG = -v
  231. ! else
  232.     LDBG = -v -Vt
  233. ! endif
  234. !endif
  235.  
  236. !if $d(DIAGS)         # default diags use precondition, check, trace & warn
  237.   __DEBUG=2
  238.   __TRACE=1
  239.   __WARN=1
  240. ! if $d(DOS) && !$d(DLL)
  241.     BD=db             # Bids Diag version mark (db for older dos libs)
  242. ! else
  243.     BD=d              # Bids Diag version mark
  244. ! endif
  245.   OD=d                # Owl  Diag version mark
  246. !endif
  247.  
  248. #
  249. # Build up compiler diag switches based on settings
  250. #
  251. !if $d(__DEBUG)
  252.   CDIAG = -D__DEBUG=$(__DEBUG)
  253. !endif
  254. !if $d(__TRACE)
  255.   CDIAG = $(CDIAG) -D__TRACE
  256. !endif
  257. !if $d(__WARN)
  258.   CDIAG = $(CDIAG) -D__WARN
  259. !endif
  260.  
  261. #--------------------------------------------------------------------
  262. # dir & search paths, & precompiled headers
  263. #--------------------------------------------------------------------
  264.  
  265. #
  266. # BC tools BCBINDIR can be based on MAKEDIR if no BCROOT is defined
  267. #
  268. !if $d(BCROOT)
  269.   BCBINDIR = $(BCROOT)\bin
  270. !else
  271.   BCBINDIR = $(MAKEDIR)
  272. !endif
  273.  
  274. #
  275. # Default bcroot to whatever is in bcroot.inc
  276. #
  277. !if !$d(BCROOT)
  278. ! include $(MAKEDIR)\bcroot.inc
  279. !endif
  280. !if !$d(BCROOT)
  281.   BCROOT = $(MAKEDIR)\..
  282. !endif
  283.  
  284. #
  285. # Where to find BC tools, libraries and include files
  286. #
  287. BCSRCDIR = $(BCROOT)\source
  288. !if $d(WIN32)
  289.   BCINCDIR = $(BCROOT)\include\win32;$(BCROOT)\include
  290. !else
  291.   BCINCDIR = $(BCROOT)\include\win16;$(BCROOT)\include
  292. !endif
  293. BCLIBDIR = $(BCROOT)\lib
  294. BCBINDIR = $(BCROOT)\bin
  295.  
  296. #
  297. # Where to find Bids dirs-- can set these for special layouts
  298. # Build search paths differently if Bids include dir is not below BC's
  299. #
  300. !if !$d(BIDSSRCDIR)
  301.   BIDSSRCDIR = $(BCSRCDIR)\classlib
  302. !endif
  303.  
  304. !if !$d(BIDSINCDIR)
  305.   BIDSINCDIR     = $(BCINCDIR)
  306.   INCLUDE       = $(BCINCDIR)
  307.   RCINCLUDEPATH = -i$(BCINCDIR)
  308. !else
  309.   INCLUDE       = $(BIDSINCDIR);$(BCINCDIR)
  310.   RCINCLUDEPATH = -i$(BIDSINCDIR) -i$(BCINCDIR)
  311. !endif
  312.  
  313. !if !$d(BIDSLIBDIR)
  314.   BIDSLIBDIR = $(BCLIBDIR)
  315. !endif
  316.  
  317. !if !$d(BIDSBINDIR)
  318.   BIDSBINDIR = $(BCBINDIR)
  319. !endif
  320.  
  321. BIDSOBJDIR = $(BIDSSRCDIR)\o\$(BD)$(KEY)   # Keep seperate diag/nondiag dirs
  322.  
  323. .PATH.obj = $(BIDSOBJDIR)
  324. .PATH.res = $(BIDSOBJDIR)
  325. .PATH.def = $(BIDSOBJDIR)
  326. .PATH.lib = $(BIDSLIBDIR)
  327. .PATH.cpp = $(BIDSSRCDIR)
  328. .PATH.cpo = $(BIDSSRCDIR)\obsolete
  329.  
  330. #
  331. # Define BIDSNOPCH to disable the use of Precompiled headers when building BIDS
  332. #
  333. !if !$d(BIDSNOPCH)
  334.   CPCH= -H=$(BIDSLIBDIR)\$(BIDSNAME)$(BD)$(KEY).csm -H"pch.h" -D_BIDSPCH -D_WSYSPCH
  335. ! if $d(WIN32) || $(__MAKE__) > 0x0370 # -Hc is not valid in earlier 16-bit
  336.     CPCH = $(CPCH) -Hc
  337. ! endif
  338. !endif
  339.  
  340. #
  341. # Where to find VCL libraries, objs, and headers
  342. #
  343. !if $d(VCL)
  344. ! if !$d(BCBROOT)
  345.     BCBROOT = $(BCROOT)
  346. ! endif
  347. ! if !$d(VCLLIBDIR)
  348.     VCLLIBDIR = $(BCBROOT)\lib
  349. ! endif
  350. ! if !$d(VCLOBJDIR)
  351.     VCLOBJDIR = $(VCLLIBDIR)\obj
  352. ! endif
  353. ! if !$d(VCLINCDIR)
  354.     VCLINCDIR = $(BCBROOT)\include\vcl
  355. ! endif
  356. INCLUDE = $(INCLUDE);$(VCLINCDIR)
  357. !endif
  358.  
  359. #--------------------------------------------------------------------
  360. # library names
  361. #--------------------------------------------------------------------
  362. !if $d(DLL)
  363.  
  364. ! if $d(VCL)
  365.     DLL32KEY = v
  366. ! else
  367.     DLL32KEY = $(MODEL)
  368. ! endif
  369.  
  370. ! if $d(WIN32)
  371.     BIDSDLL = $(BIDSBINDIR)\$(BIDSDLLNAME)$(BIDSVER)$(BD)$(DLL32KEY).dll
  372. ! else
  373.     BIDSDLL = $(BIDSBINDIR)\$(BIDSDLLNAME)$(BIDSVER)$(BD).dll
  374. ! endif
  375.  
  376.   BIDSDEF = bids.def
  377.   BIDSRES = version.res  #bids.res
  378.  
  379. !endif
  380. BIDSLIB = $(BIDSLIBDIR)\$(BIDSNAME)$(BD)$(KEY).lib
  381.  
  382. #
  383. # If building for VCL, use an RTL that begins "cp" instead of "cw"
  384. #
  385. !if $d(VCL)
  386.   RTLPFX=cp
  387. !else
  388.   RTLPFX=cw
  389. !endif
  390.  
  391. #--------------------------------------------------------------------
  392. # Options which are memory model independent
  393. #--------------------------------------------------------------------
  394. !if $d(NAMESPACE)
  395.   CFLAGS = $(CFLAGS) -DBI_NAMESPACE
  396. !endif
  397. !if $d(BI_REDEFINE_BOOL)
  398.   CFLAGS = $(CFLAGS) -DBI_REDEFINE_BOOL
  399. !endif
  400.  
  401. #--------------------------------------------------------------------
  402. # Tools and options for Win32
  403. #--------------------------------------------------------------------
  404. !if $d(WIN32)
  405. ! if $d(BCC32I)
  406.     CC     = $(BCBINDIR)\bcc32i      # Highly optimizing compiler
  407. ! else
  408.     CC     = $(BCBINDIR)\bcc32       # Regular optimizing compiler
  409. ! endif
  410.   RCC      = brcc32 -DWIN32          # Resource compiler
  411. ! if $d(ILINK)
  412.   LINK     = $(BCBINDIR)\ilink32     # Linker
  413. ! else
  414.   LINK     = $(BCBINDIR)\tlink32     # Linker
  415. ! endif
  416.   LIB      = $(BCBINDIR)\tlib        # Librarian
  417.   IMPLIB   = $(BCBINDIR)\implib      # Import library generator
  418.   TDSTRIP  = $(BCBINDIR)\tdstrp32    # Debug info extractor
  419.  
  420.   CFLAGS  = $(CFLAGS) -d -k- -O1gmpv # Optimizations
  421. ! if $d(CODEGUARD)                   # d=add data, c=add calls, t=check this
  422.     CFLAGS = $(CFLAGS) -vGd -vGt
  423. !   if $(CODEGUARD) == 2
  424.       CFLAGS= $(CFLAGS) -vGc
  425. !   endif
  426. !  endif
  427.   CFGFILE  = bcc32.cfg               # Name of compiler's config file
  428. ! if $d(DEBUG)
  429.     LIBOPTS = /P512 /C
  430. ! else
  431.     LIBOPTS = /P32 /0 /C
  432. ! endif
  433.  
  434. ! if $d(DLL)
  435.     CFLAGS = $(CFLAGS) -WDE -D_BUILDBIDSDLL -D_BUILDSVCSDLL -D_BUILDWSYSDLL
  436.     LFLAGS = $(LDBG) -Tpd -s -c
  437.     STDLIBS  = import32 $(RTLPFX)32$(MT)i   # Libs for linking the DLL
  438. !   if $d(CODEGUARD)
  439.       STDLIBS  = cg32 $(STDLIBS)
  440. !   endif
  441.     STARTUP  = c0d32
  442. ! else
  443.     CFLAGS = $(CFLAGS) #!TH why always windows? -W
  444. ! endif
  445.  
  446. ! if $d(VCL)
  447.     CFLAGS  = $(CFLAGS) -b- -Vx -Ve
  448.     LFLAGS  = $(LFLAGS) -j$(VCLOBJDIR)
  449.     STDLIBS = $(STDLIBS)
  450. ! endif
  451.  
  452. ! if !$d(MT)
  453.     CFLAGS = $(CFLAGS) -WM-
  454. ! endif
  455.  
  456. ! if $d(VCL)
  457.     CFLAGS = $(CFLAGS) -a4
  458. ! elif $d(ALIGN)
  459.     CFLAGS = $(CFLAGS) -a$(ALIGN)
  460. ! endif
  461.  
  462. #--------------------------------------------------------------------
  463. # Tools and options for OS/2
  464. #--------------------------------------------------------------------
  465. !elif $d(OS2)
  466.   CC       = $(BCBINDIR)\bcc         # Compiler
  467.   RCC      = brcc                    # Resource compiler
  468.   LINK     = $(BCBINDIR)\tlink       # Linker
  469.   LIB      = $(BCBINDIR)\tlib        # Librarian
  470.   IMPLIB   = $(BCBINDIR)\implib      # Import library generator
  471.   TDSTRIP  = $(BCBINDIR)\tdstrip     # Debug info extractor
  472.  
  473.   CFLAGS   = $(CFLAGS) -d -k- -O1gmpv# Optimizations
  474.   CFGFILE  = turboc.cfg              # Name of compiler's config file
  475. ! if $d(DEBUG)
  476.     LIBOPTS = /P512 /C
  477. ! else
  478.     LIBOPTS = /P32 /0 /C
  479. ! endif
  480.  
  481. ! if $d(DLL)
  482.     CFLAGS = $(CFLAGS) -WDE -D_BUILDBIDSDLL -D_BUILDSVCSDLL -D_BUILDWSYSDLL
  483.     LFLAGS   = $(LDBG) -Tod -s -c
  484.     STDLIBS  = c2$(MT)i os2     # Libs for linking the DLL
  485.     STARTUP  = c02d
  486. ! else
  487.     CFLAGS = $(CFLAGS) -W
  488. ! endif
  489. ! if $d(MT)
  490.     CFLAGS = $(CFLAGS) -sm
  491. ! endif
  492.  
  493. #--------------------------------------------------------------------
  494. # Tools and options for DOS / Win16
  495. #--------------------------------------------------------------------
  496. !elif $d(WIN16)
  497.   CC      = $(BCBINDIR)\bcc          # Compiler
  498.   RCC     = brcc                     # Resource compiler
  499.   LINK    = $(BCBINDIR)\tlink        # Linker
  500.   RLINK   = $(BCBINDIR)\rlink        # Resource linker
  501.   LIB     = $(BCBINDIR)\tlib         # Librarian
  502.  
  503.   # implib needs -o switch in 16 bit for compatibility
  504.   IMPLIB   = $(BCBINDIR)\implib -o   # Import library generator
  505.   TDSTRIP  = $(BCBINDIR)\tdstrip     # Debug info extractor
  506.  
  507.   CFLAGS   = $(CFLAGS) -2- -d -k- -O1gmpv   # Optimizations
  508.   CFLAGS   = $(CFLAGS) -m$(MODEL)           # Memory Model
  509. ! if $d(DLL) && $d(CODEGUARD)               # Enable compiler's CodeGuard support
  510.     CFLAGS = $(CFLAGS) -vGd -vGt
  511. !  endif
  512.  
  513. #! if $(MODEL) != s && $(MODEL) != m # Far data models can put strs in code seg
  514. #    CFLAGS=$(CFLAGS) -dc
  515. #! endif
  516. ! if $d(BIDSFARVTABLE)
  517.     CFLAGS = $(CFLAGS) -D_BIDSFARVTABLE #;_RTLFARVTABLE
  518. ! endif
  519. ! if $d(DISABLE_EXCEPTIONS)
  520.     CFLAGS = $(CFLAGS) -DDISABLE_EXCEPTIONS -x-
  521. ! endif
  522.   CFGFILE = turboc.cfg
  523.  
  524. ! if $d(DEBUG)
  525.     LIBOPTS = /P512 /C
  526. ! else
  527.     LIBOPTS = /P32 /0 /C
  528. ! endif
  529.  
  530. ! if $d(DLL)                         # Build the 16bit DLL
  531.     # Dll, explicit export, compat excptns
  532.     CFLAGS = $(CFLAGS) -WDE -D_BUILDBIDSDLL -D_BUILDSVCSDLL -D_BUILDWSYSDLL -xc
  533.     LFLAGS = $(LDBG) -Twd -n -s -c -C -Oc -Oi -Oa -Or
  534.     STDLIBS  = import crtldll        # Libs for linking the DLL
  535. !if $d(CODEGUARD)
  536.     STDLIBS  = cg16 $(STDLIBS)
  537. !endif
  538.     STARTUP  = c0dl
  539. ! else
  540. !   if $(MODEL) == h
  541.       CFLAGS = $(CFLAGS) -D_Windows      # Fool headers to get windows incs
  542. !   else
  543. !     if $d(USERDLL)
  544.         CFLAGS = $(CFLAGS) -WDE -xc      # Build static lib for use in DLLs
  545. !     endif
  546. !   endif
  547. ! endif
  548. ! if $d(ALIGN)
  549.     CFLAGS = $(CFLAGS) -a$(ALIGN)
  550. ! endif
  551.  
  552. !else
  553. ! error No platform defined. Define one of: DOS, WIN16, WIN32, OS2
  554. !endif
  555.  
  556. #--------------------------------------------------------------------
  557. # Rules
  558. #--------------------------------------------------------------------
  559. .rc.res:
  560.   $(RCC) $(RCINCLUDEPATH) -fo$@ $.
  561.  
  562. .cpp.obj:
  563.   $(CC) {$& }
  564.  
  565. .cpo.obj:
  566.   $(CC) -P {$& }
  567.  
  568. #-----------------------------------------------------------------------------
  569. #
  570. # Build the various file lists needed for dependency checking,
  571. # and LIBing.
  572. #
  573. #   OBJS is the main list, conditionalized for the various targets
  574. #       and options.
  575. #
  576. #   OBJS_LIB are the objs that only go in libs & implib, not the dll
  577. #
  578. #   OBJS_DLL are the objs that only go in the dll, not the libs
  579. #
  580. #   DEPOBJS is the list of object files for dependency checking
  581. #
  582. #   LIBOBJS is the list of object files for building the library
  583. #
  584. #-----------------------------------------------------------------------------
  585.  
  586. # Old Object Container files
  587. #
  588. !if $d(OBJECTS)
  589. OBJS =           \
  590.  PFXassoc.obj    \
  591.  PFXbtree.obj    \
  592.  PFXbtreeinn.obj \
  593.  PFXbtreelfn.obj \
  594.  PFXcollect.obj  \
  595.  PFXcontain.obj  \
  596.  PFXdbllist.obj  \
  597.  PFXhashtbl.obj  \
  598.  PFXldate.obj    \
  599.  PFXlist.obj     \
  600.  PFXltime.obj    \
  601.  PFXobject.obj
  602. !endif
  603.  
  604. # BIDS Container files
  605. #
  606. OBJS = $(OBJS)   \
  607.  PFXbinimp.obj   \
  608.  PFXheapsel.obj
  609.  
  610. !if $d(DOS) && !$d(DLL)
  611.   OBJS = $(OBJS) PFXtimer.obj
  612. !endif
  613.  
  614. # Class Library files
  615. #
  616. OBJS = $(OBJS)   \
  617.  PFXcastable.obj \
  618.  PFXdate.obj     \
  619.  PFXdateio.obj   \
  620.  PFXdatep.obj    \
  621.  PFXobjstrm.obj  \
  622.  PFXtime.obj     \
  623.  PFXtimep.obj    \
  624.  PFXversion.obj  \
  625.  PFXcmdline.obj  \
  626.  PFXfile.obj     \
  627.  PFXtimeio.obj   \
  628.  PFXfilename.obj
  629.  
  630. #!if $(MODEL)!=h                 # use these files for huge model
  631. #OBJS = $(OBJS)   \
  632. # PFXfilename.obj
  633. #!endif
  634.  
  635. !if $d(WIN32) || $d(OS2)
  636.   OBJS = $(OBJS) PFXthread.obj
  637. !endif
  638.  
  639. # Services Library files. Most are not needed for BorlandC++
  640. #
  641. OBJS = $(OBJS)   \
  642.   PFXmemory.obj
  643.  
  644. # WinSys Library files (some MSW specific)
  645. #
  646. !if $(MODEL)!=h
  647. OBJS = $(OBJS)   \
  648.  PFXcolor.obj
  649. !else
  650. !endif
  651.  
  652. !if !$d(OS2)
  653.  
  654. OBJS = $(OBJS)   \
  655.  PFXexbase.obj   \
  656.  PFXgeometrp.obj \
  657.  PFXgeometrs.obj \
  658.  PFXgeometry.obj \
  659.  PFXsystem.obj   \
  660.  PFXreglink.obj
  661.  
  662. ! if $(MODEL)!=h                # do not compile thse when using huge model
  663. OBJS = $(OBJS)   \
  664.  PFXdiaginit.obj \
  665.  PFXmsgthred.obj \
  666.  PFXprofile.obj  \
  667.  PFXuimetric.obj \
  668.  PFXwsyscls.obj  \
  669.  PFXwsysclsp.obj \
  670.  PFXwsysclss.obj
  671. ! endif
  672.  
  673. !endif
  674.  
  675.  
  676. OBJS_LIB =       \
  677.  PFXlocale.obj   \
  678.  PFXlocaleco.obj \
  679.  PFXlocaleid.obj \
  680.  PFXustring.obj  \
  681.  PFXregheap.obj  \
  682.  PFXregistry.obj   # needs ole2 & prev 3 need TLocaleString currently
  683.  
  684. OBJS_DLL =
  685.  
  686. !if $d(OBJECTS)
  687. !if $d(TEMPLATES)
  688. OBJS = $(OBJS)   \
  689.  PFXbabstary.obj \
  690.  PFXbdict.obj    \
  691.  PFXbsortary.obj
  692. !else
  693. OBJS = $(OBJS)   \
  694.  PFXabstarry.obj \
  695.  PFXarray.obj    \
  696.  PFXdeque.obj    \
  697.  PFXdict.obj     \
  698.  PFXsortarry.obj \
  699.  PFXstack.obj
  700. !endif
  701. !endif
  702.  
  703. !if $d(DLL)
  704. OBJS = $(OBJS) PFXclasmain.obj
  705. !endif
  706.  
  707. !if $d(DLL) && $d(OBJECTS)
  708.  
  709. !if $d(TEMPLATES)
  710. OBJS = $(OBJS) PFXtmpl2.obj
  711. !else
  712. OBJS = $(OBJS) PFXtmpl1.obj
  713. !endif
  714.  
  715. !endif
  716.  
  717. !if $d(DLL) && !$d(OBJECTS) && !$d(OS2)
  718. RESFILE = version.res
  719. !endif
  720.  
  721. DEPOBJS = $(OBJS:PFX=) $(OBJS_LIB:PFX=) $(OBJS_DLL:PFX=)
  722. !if $d(DLL)
  723. LIBOBJS = $(OBJS_LIB:PFX=+)
  724. LINKOBJS = $(OBJS:PFX=) $(OBJS_DLL:PFX=)
  725. !else
  726. LIBOBJS = $(OBJS:PFX=+) $(OBJS_LIB:PFX=+)
  727. !endif
  728.  
  729. #-----------------------------------------------------------------------------
  730. # These are the targets that we can make.
  731. #
  732. #   target: builds the target file
  733. #
  734. #   cfgfile: builds a .CFG file with the correct flags
  735. #-----------------------------------------------------------------------------
  736.  
  737. !if $d(DLL)
  738. DEFFILE=deffile
  739. !endif
  740.  
  741. target: cfgfile $(BIDSLIB)
  742.  
  743. cfgfile:
  744.   @-if not exist $(.PATH.cpp)\o\NUL md $(.PATH.cpp)\o
  745.   @-if not exist $(.PATH.obj)\NUL md $(.PATH.obj)
  746.   @copy &&|
  747. -I$(INCLUDE)
  748. -c -w $(CFLAGS) $(CDBG) $(CDIAG)
  749. $(CPCH) -n$(.PATH.obj)
  750. | $(CFGFILE) > NUL
  751.  
  752. !if $d(DLL)
  753.  
  754. $(.PATH.obj)\$(BIDSRES):
  755.   $(RCC) $&.rc @&&|
  756. $(RCINCLUDEPATH)
  757. | -fo$@
  758.  
  759. !if $d(WIN32)
  760.  
  761. $(BIDSLIB): $(DEPOBJS) $(.PATH.obj)\$(BIDSDEF) $(.PATH.obj)\$(BIDSRES)
  762.   @cd $(.PATH.obj)
  763.   $(LINK) @&&|
  764. $(LFLAGS) -L$(BCLIBDIR);$(VCLLIBDIR) $(STARTUP) +
  765. $(LINKOBJS)
  766. $(BIDSDLL)
  767.  
  768. $(STDLIBS)
  769. $(BIDSDEF)
  770. $(BIDSRES)
  771. |
  772. !if !$d(DIAGS)
  773.   $(TDSTRIP) -s $(BIDSDLL)
  774. !endif
  775.   $(IMPLIB) $(BIDSLIB) $(BIDSDLL)
  776.   $(LIB) $(LIBOPTS) $(BIDSLIB) @&&|
  777. $(LIBOBJS)
  778. |
  779.   @-del $*.bak
  780.   @cd $(.PATH.cpp)
  781.  
  782. $(.PATH.obj)\$(BIDSDEF):
  783.   @copy &&|
  784. LIBRARY     $(BIDSNAME)$(BIDSVER)$(BD) INITINSTANCE  #
  785. DESCRIPTION 'Borland Class Library for C++'
  786. #EXETYPE     WINDOWS
  787. DATA        MULTIPLE NONSHARED
  788. | $(.PATH.obj)\$(BIDSDEF) > NUL
  789.  
  790. !else  # ! WIN32
  791.  
  792. $(BIDSLIB): $(DEPOBJS) $(.PATH.obj)\$(BIDSDEF) $(.PATH.obj)\$(BIDSRES)
  793.   @cd $(.PATH.obj)
  794.   $(LINK) @&&|
  795. $(LFLAGS) -L$(BCLIBDIR) $(STARTUP) +
  796. $(LINKOBJS)
  797. $(BIDSDLL)
  798.  
  799. $(STDLIBS)
  800. $(BIDSDEF)
  801. |
  802.   $(RLINK) @&&|
  803. -v -31 -k $(BIDSRES) $(BIDSDLL)
  804. |
  805. # $(IMPLIB) -i $(BIDSLIB) $(BIDSDEF) $(BIDSDLL) #
  806.   $(IMPLIB) -i $(BIDSLIB) $(BIDSDLL)
  807.   $(LIB) $(LIBOPTS) $(BIDSLIB) @&&|
  808. $(LIBOBJS)
  809. |
  810. !if !$d(DIAGS)
  811.   $(TDSTRIP) -s $(BIDSDLL)
  812. !endif
  813.   @-del $*.bak
  814.   @cd $(.PATH.cpp)
  815.  
  816. $(.PATH.obj)\$(BIDSDEF):
  817.   @copy &&|
  818. LIBRARY     $(BIDSDLLNAME)$(BIDSVER)$(BD)
  819. DESCRIPTION 'Borland Class Library for C++'
  820. EXETYPE     WINDOWS
  821. CODE        PRELOAD MOVEABLE DISCARDABLE
  822. DATA        PRELOAD MOVEABLE SINGLE
  823. HEAPSIZE    4096
  824. EXPORTS
  825.     WEP @1 RESIDENTNAME
  826. | $(.PATH.obj)\$(BIDSDEF) > NUL
  827.  
  828. !endif # if/else WIN32
  829.  
  830. !else  # ! DLL
  831.  
  832. $(BIDSLIB): $(DEPOBJS)
  833.   @-del $(BIDSLIB)
  834.   @cd $(.PATH.obj)
  835.   $(LIB) $(LIBOPTS) $(BIDSLIB) @&&|
  836. $(LIBOBJS)
  837. |
  838.   @cd $(.PATH.cpp)
  839.  
  840. !endif
  841.  
  842. #-----------------------------------------------------------------------------
  843. # We need an implicit rule for building .OBJ files, and a few
  844. # explicit rules for special cases.
  845. #
  846. #   TIMER.OBJ is never built for windows, so doesn't need the
  847. #       windows flags.
  848. #-----------------------------------------------------------------------------
  849. CFLAGS_WIN=-W $(CFLAGS_WIN)
  850.  
  851. # For pre v5.0 tools, LPCWSTR is only defined via OLE headers
  852. #
  853. !if $(__MAKE__) <= 0x0370
  854.  CFLAGS_WIN=$(CFLAGS_WIN) -DINC_OLE2
  855. !endif
  856. !if $(MODEL)==l && $d(CODEGUARD)
  857.  CFLAGS_WIN=-vGd -vGt $(CFLAGS_WIN)
  858. !endif
  859.  
  860. !if $(MODEL)!=h
  861. file.obj: file.cpp
  862.   $(CC) $(CFLAGS_WIN) {$& }
  863.  
  864. filename.obj: filename.cpp
  865.   $(CC) $(CFLAGS_WIN) {$& }
  866.  
  867. memory.obj: memory.cpp
  868.   $(CC) $(CFLAGS_WIN) {$& }
  869.  
  870. timeio.obj: timeio.cpp
  871.   $(CC) $(CFLAGS_WIN) {$& }
  872.  
  873. exbase.obj: exbase.cpp
  874.   $(CC) $(CFLAGS_WIN) {$& }
  875.  
  876. geometrp.obj: geometrp.cpp
  877.   $(CC) $(CFLAGS_WIN) {$& }
  878.  
  879. geometrs.obj: geometrs.cpp
  880.   $(CC) $(CFLAGS_WIN) {$& }
  881.  
  882. geometry.obj: geometry.cpp
  883.   $(CC) $(CFLAGS_WIN) {$& }
  884.  
  885. system.obj: system.cpp
  886.   $(CC) $(CFLAGS_WIN) {$& }
  887.  
  888. reglink.obj: reglink.cpp
  889.   $(CC) $(CFLAGS_WIN) {$& }
  890.  
  891. locale.obj: locale.cpp
  892.   $(CC) $(CFLAGS_WIN) {$& }
  893.  
  894. localeco.obj: localeco.cpp
  895.   $(CC) $(CFLAGS_WIN) {$& }
  896.  
  897. localeid.obj: localeid.cpp
  898.   $(CC) $(CFLAGS_WIN) {$& }
  899.  
  900. ustring.obj: ustring.cpp
  901.   $(CC) $(CFLAGS_WIN) {$& }
  902.  
  903. regheap.obj: regheap.cpp
  904.   $(CC) $(CFLAGS_WIN) {$& }
  905.  
  906. registry.obj: registry.cpp
  907.   $(CC) $(CFLAGS_WIN) {$& }
  908.  
  909. !endif
  910.  
  911. color.obj: color.cpp
  912.   $(CC) $(CFLAGS_WIN) {$& }
  913.  
  914. diaginit.obj: diaginit.cpp
  915.   $(CC) $(CFLAGS_WIN) {$& }
  916.  
  917. msgthred.obj: msgthred.cpp
  918.   $(CC) $(CFLAGS_WIN) {$& }
  919.  
  920. profile.obj: profile.cpp
  921.   $(CC) $(CFLAGS_WIN) {$& }
  922.  
  923. uimetric.obj: uimetric.cpp
  924.   $(CC) $(CFLAGS_WIN) {$& }
  925.  
  926. wsyscls.obj: wsyscls.cpp
  927.   $(CC) $(CFLAGS_WIN) {$& }
  928.  
  929. wsysclss.obj: wsysclss.cpp
  930.   $(CC) $(CFLAGS_WIN) {$& }
  931.  
  932. wsysclsp.obj: wsysclsp.cpp
  933.   $(CC) $(CFLAGS_WIN) {$& }
  934.  
  935.